Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра «ЕОМ»
Лабораторна робота №2
з предмету “Архітектура комп’ютерів”
на тему:
«Дослідження макроалгоритмів та мікроалгоритмів виконання машинних інструкцій»
Мета: зрозуміти і дослідити макроалгоритм та мікроалгоритм виконання кожної машинної інструкції машини Ноймана.
Завдання: покроковим режимом протестувати виконання кожної машинної інструкції, проаналізувати і пояснити отримані результати, потактовим режимом протестувати поокреме виконання кожної машинної інструкції, проаналізувати і пояснити отримані результати, скласти звіт з виконання лабораторних досліджень та захистити його.
Теоретичні відомості
В покроковому (інші назви: поінструкційний, покомандний режим) режимі виконання окремої машинної інструкції досліджують мікроалгоритм виконання цієї інструкції. Якщо прийняти до уваги, що в класі універсальних машин алгоритми програмують, програми завантажують до комп’ютерів і ними виконують, то зараз вийде наступне.
1. Програми складають з машинних інструкцій. Кожна інструкція має свій алгоритм виконання і цей алгоритм має точно уявляти системний програміст, що пише програму машинним кодом (як не дивно, але таке трапляється і трапляється не так зрідка). Алгоритми виконання кожної окремої машинної інструкції, що сприймає програміст, називають макроалгоритмами.
2. Для комп’ютерного інженера кожний макроалгоритм, особливий для кожної машинної інструкції, теж потрібно «запрограмувати», тобто, в певній формі записати «програму», що реалізує макроалгоритм виконання тої чи іншої машинної інструкції. Це подібно до програмування, але є іншим.
3. Кажимо, що програміст програмує задачу, а комп’ютерний інженер (мікропрограміст) мікропрограмує макроалгоритм виконання машинної інструкції. Виконання однієї такої мікропрограми є для програміста еквівалентним виконанню однієї машинної інструкції. Якщо програміст розуміє, як поокремі машинні інструкціями складають цілістну програму, то мікропрограміст цим не цікавиться. Задача мікропрограміста - надати в розпорядження програміста ефективний за певними критеріями набір машинних інструкцій (кажуть, множину машинних інструкцій).
Наприклад, множина з вісьми машинних інструкцій симулятора Кроха і його дуже обмежена пам’ять в 16 15-розрядних комірок дозволяє створити для нього компілятор мови Паскаль.
Отже, технології програмування комп’ютерів і їхнього проектування (створення мікрокодів для кожної машинної інструкції) є досить спорідненими.
4. Коли програми складені з машинних інструкцій (команд), тоді кожну машинну інструкцію складають з мікрокоманд, що всі разом утворюють мікропрограму виконання певної машинної інструкції команди).
Виконання роботи
Індивідуальне завдання:
№
Завдання
3
r =2(56+57+…+66)
Результат виконання:
Адреса
Машинний код
0000
0001
0010
0011
001 1101 1100 1101
001 1100 1011 1100
110 1110 1100 0000
101 1101 1010 1111
0100
0101
0110
0111
111 1111 1111 1111
000 0000 0000 0000
000 0000 0000 0000
000 0000 0000 0000
1000
1001
1010
1011
000 0000 0000 0000
000 0000 0000 0000
000 0000 0000 0010
000 0000 0000 0001
1100
1101
1110
1111
000 0000 0011 1001
000 0000 0011 1000
000 0000 0100 0011
rrr rrrr rrrr rrrr
Результат в режимі АВТО:
Записи в адресах:
адрес 1101 – 56(111000) – перше число;
адрес 1100 – 57(111001) – друге число;
адрес 1010 – 2(0010) – множник;
адрес 1011 – 1(0001) – крок, для дій з наступними числами (58, 59…).
адрес 1110 – 67(1000011) – межа чисел, які додаються.
адрес 1111 – r – результат виконання.
Робота програми в потактовому режимі:
/
Мал.1.1 Перша інструкція
Ця інструкція реалізує додавання двох чисел: перше число 5610(1110002), записане в комірці за адресою 13 (11012); друге число – наступний доданок число 5710(1110012), записане в комірці за адресою 12 (11002). Результат зберігаємо в комірку з адресу 13 (11012).
ТАКТ:
МК1: memory(0000) → IR.
МК2: PC+1→PC
МК3: memory (1101) → ACC
МК4: ACC + memory (1100) → ACC
MK5: ...